#include <iostream>
using namespace std;

const int N = 1e6 + 10;
int a[N], b[N], c[N];
int la, lb, lc;

// 高精度加法 c = a + b
void add(int c[], int a[], int b[])
{
    for(int i = 0; i < lc; i++)
    {
        c[i] += a[i] + b[i]; // 对应位相加，再加上进位
        c[i + 1] += c[i] / 10; // 处理进位
        c[i] %= 10; // 处理余数
    }

    if(c[lc]) lc ++; // 检查最高位是否有进位
}

int main()
{   
    string x, y; cin >> x >> y;
    // 1.拆分每一位，逆序放在数组中
    la = x.size(); lb = y.size(); lc = max(la, lb);
    for(int i = 0; i < la; i++) a[la - 1 - i] = x[i] - '0';
    for(int i = 0; i < lb; i++) b[lb - 1 - i] = y[i] - '0';

    // 2.模拟加法 c = a + b
    add(c, a, b);

    // 3.输出结果
    for(int i = lc - 1; i >= 0; i--) cout << c[i];

    return 0;
}